// 导入数据库操作模块
const db = require('../db/index')
// 导入加密模块
const bcrypt = require('bcryptjs')
// 导入生成token的包
const jwt = require('jsonwebtoken')
// 导入全局配置文件
const config = require('../config')

exports.login = (req,res)=>{
    const user = req.body
    console.log('发来的数据：',user)
    if(!user.username||!user.password){
        return res.send({
            status: 1,
            msg: '输入不能为空！'
        })
    }
    // 查找输入的账号
    db.query('select * from ev_users where username=?',user.username,(err,result)=>{
        if(err){
            return res.send({
                status: 1,
                msg: err
            })
        }
        // 没找到(没注册过)
        if(!result.length==1){
            return res.send({
                status: 1,
                msg: '该用户不存在！'
            })
        }
        // 找到了(注册过)，验证密码
        // 验证通过
        if(bcrypt.compareSync(user.password,result[0].password)){
            // 生成token
            const user = {...result[0],password:'',user_pic:''}
            const tokenStr = jwt.sign( { user }, config.jwtSecretKey, { expiresIn: '10h' } )
            console.log('登录成功')
            return res.send({
                status: 0,
                msg: '登录成功',
                token: 'Bearer' + tokenStr
            })
        }
        // 密码错误
        else {
            return res.send({
                status: 1,
                msg: '密码错误'
            })
        }
    })
}


exports.register = (req,res)=>{
    console.log('点击注册了')
    const user = req.body
    console.log(user)
    if(!user.username||!user.password){
        return res.send({
            status: 1,
            msg: '用户名或者密码不能为空！'
        })
    }
    db.query('select * from ev_users where username=?',user.username,(err,result)=>{
        // 查询失败
        if(err){
            return res.send({
                status:1,
                msg:err
            })
        }
        // 判断用户名是否被占用
        if(result.length>0){    //被占用了
            return res.send({
                status:1,
                msg:'该用户名已被占用，请更换其他用户名！'
            })
        }
        // 未被占用,进行注册操作
        // 为确保用户信息安全，使用bcrypt.hashSync()对密码进行加密
        user.password = bcrypt.hashSync(user.password,10)
        // 新账号注册到数据库
        db.query('insert into ev_users set ?',{ username: user.username, password: user.password},(err,result)=>{
            if(err){
                return res.send({
                    status: 1,
                    msg: err
                })
            }
            // 判断影响行数是否为1
            if(result.affectedRows !== 1){
                return res.send({
                    status: 1,
                    msg: '注册用户失败，请稍后再试！'
                })
            }
            // 注册成功
            return res.json({
                status: 0,
                msg: '注册成功！'
            })
        })
    })  
}


